]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
appDisplay: Separate app loading from filling the grid
authorFlorian Müllner <fmuellner@gnome.org>
Tue, 19 Feb 2013 20:31:05 +0000 (21:31 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 19 Feb 2013 23:18:56 +0000 (00:18 +0100)
At the moment when loading the applications, each app is inserted
at its correct (alphabetical) position. Avoid this overhead by
loading all apps first, then sort them once and fill the grid with
the sorted actors.

https://bugzilla.gnome.org/show_bug.cgi?id=694192

js/ui/appDisplay.js

index cc4a665a9798c450abf5e1851a39a8f38819a35e..e45c166bcbf1f59bd49a32b841178dcbc9f841bb 100644 (file)
@@ -89,12 +89,21 @@ const AlphabeticalView = new Lang.Class({
             return null;
 
         let itemIcon = this._createItemIcon(item);
-        let pos = Util.insertSorted(this._allItems, item, this._compareItems);
-        this._grid.addItem(itemIcon.actor, pos);
-
+        this._allItems.push(item);
         this._items[id] = itemIcon;
 
         return itemIcon;
+    },
+
+    loadGrid: function() {
+        this._allItems.sort(this._compareItems);
+
+        for (let i = 0; i < this._allItems.length; i++) {
+            let id = this._getItemId(this._allItems[i]);
+            if (!id)
+                continue;
+            this._grid.addItem(this._items[id].actor);
+        }
     }
 });
 
@@ -276,6 +285,7 @@ const AppDisplay = new Lang.Class({
                 _loadCategory(dir, this._view);
             }
         }
+        this._view.loadGrid();
 
         if (this._focusDummy) {
             let focused = this._focusDummy.has_key_focus();
@@ -367,6 +377,7 @@ const FolderIcon = new Lang.Class({
         this.view = new FolderView();
         this.view.actor.reactive = false;
         _loadCategory(dir, this.view);
+        this.view.loadGrid();
 
         this.actor.connect('clicked', Lang.bind(this,
             function() {